package br.infnet.blocoarquiteturajava.managebean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.event.ValueChangeEvent;

import br.infnet.blocoarquiteturajava.dominio.Agencia;
import br.infnet.blocoarquiteturajava.dominio.Conta;
import br.infnet.blocoarquiteturajava.dominio.Cliente;
import br.infnet.blocoarquiteturajava.dominio.TipoDePessoa;

@ManagedBean(name = "contaCorrente")
@RequestScoped
public class ContaCorrenteMB implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 5056846288689303026L;
	// ------------------ Componentes da pagina
	private TipoDePessoa natureza;
	private HtmlSelectOneMenu modalidade;
	private HtmlSelectOneMenu agencia;
	private HtmlSelectOneMenu modalide;
	private boolean showAgencia = true;
	private boolean showModalidade = true;
	private boolean showTipoConta = true;

	public boolean isShowModalidade() {
		return showModalidade;
	}

	public void setShowModalidade(boolean showModalidade) {
		this.showModalidade = showModalidade;
	}

	public boolean isShowTipoConta() {
		return showTipoConta;
	}

	public void setShowTipoConta(boolean showTipoConta) {
		this.showTipoConta = showTipoConta;
	}

	public boolean isShowAgencia() {
		return showAgencia;
	}

	public void setShowAgencia(boolean showAgencia) {
		this.showAgencia = showAgencia;
	}

	public HtmlSelectOneMenu getModalide() {
		return modalide;
	}

	public void setModalide(HtmlSelectOneMenu modalide) {
		this.modalide = modalide;
	}

	public TipoDePessoa getNatureza() {
		return natureza;
	}

	public void setNatureza(TipoDePessoa natureza) {
		this.natureza = natureza;
	}

	public HtmlSelectOneMenu getModalidade() {
		return modalidade;
	}

	public void setModalidade(HtmlSelectOneMenu modalidade) {
		this.modalidade = modalidade;
	}

	public HtmlSelectOneMenu getAgencia() {
		return agencia;
	}

	public void setAgencia(HtmlSelectOneMenu agencia) {
		this.agencia = agencia;
	}

	// ------------------Fim componentes da pagina

	private Cliente pessoa;

	public ContaCorrenteMB() {
		super();
		agencias = new ArrayList<Agencia>();
		agencias.add(new Agencia("001"));
		agencias.add(new Agencia("009"));
		agencias.add(new Agencia("016"));
		agencias.add(new Agencia("007"));
	}

	private Conta conta;

	private List<Agencia> agencias;

	public Conta getConta() {
		return conta;
	}

	public void setConta(Conta conta) {
		this.conta = conta;
	}

	public Cliente getPessoa() {
		return pessoa;
	}

	public void setPessoa(Cliente pessoa) {
		this.pessoa = pessoa;
	}

	public List<Agencia> getAgencias() {
		return agencias;
	}

	public void setAgencias(List<Agencia> agencias) {
		this.agencias = agencias;
	}

	public void changeNaturezaHandler(ValueChangeEvent event) {
		pessoa = ((TipoDePessoa) event.getNewValue()).create();
	}
}
